1. Field of the Invention
This invention relates generally to processor-based systems, and more particularly, to defining verbs and adverbs in a processor-based system.
2. Description of the Related Art
Reliability and availability have become increasingly important in a modern, computer-dependent society. Recent years have seen a significant number of advances in processor-based systems and communications technologies, as well as a sharp decline in their cost. These developments, coupled with the growing availability of network and Internet connections, have resulted in a greater reliance by society on processor-based systems and the services they provide. In many applications where processor-based systems are used, outages and malfunction can be expensive. Common examples where an unreliable or unavailable processor-based system may be problematic include telecommunications switching systems and bank transaction systems.
Fault tolerance is generally a means of achieving reliable and available systems, among other advantages. A fault tolerant system is generally a system that can provide services notwithstanding the presence of faults. There are two basic levels at which fault tolerance can be applied to a system. At the first level, fault tolerance has been used to compensate for faults in processor-based system resources (i.e., “hardware”). By managing extra hardware resources, the processor-based system generally increases its ability to continue operation. Hardware fault tolerance measures include redundant communications, replicated processors, additional memory, and redundant power/energy supplies. A second level of fault tolerance recognizes that a fault tolerant hardware platform does not, in and of itself, guarantee high availability to the system user. It may still be useful to structure the processor-based system software to compensate for faults such as changes in program or data structures due to transients or design errors. This is software fault tolerance. Mechanisms of software fault tolerance include checkpoint/restart, recovery blocks, and multiple-version programs. It is important to note that fault tolerance measures may be applied to at least one of the two levels.
In determining fault tolerance measures for a computer system, the dependability of the system may need to be evaluated. An exemplary method of evaluating the dependability of a system includes fault injection. Fault injection generally involves the deliberate insertion of faults or errors (i.e., fault injection code fragments) in processor-based systems to observe its effects on system behavior. The observations may be used in evaluating existing fault tolerant mechanisms and/or they may be used in developing new fault tolerant mechanisms. Fault injection generally aims to detect the presence of design and implementation faults and to quantify the confidence that can be attributed to a system by estimating the number and the consequences of possible faults in the system.
Traditionally, fault injection code fragments, which are generally written in a lower level programming language (e.g., assembly language) may not be easily understood by a user who did not write the fragments, substantially limiting the value of the fragments. Furthermore, traditional fault injection methods do not allow easy manipulation of fault injection code fragments, such as combining various fault injection code fragments.